package br.unp.tasi.loja.controladores;

import br.unp.tasi.loja.entidades.Usuario;
import br.unp.tasi.loja.repositorios.RepositorioUsuario;
import javax.inject.Inject;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Controlador de Produtos
 * @author jfrank
 */
@Controller
@RequestMapping("/usuario")
public class ControladorUsuario {

  private transient final Log log = LogFactory.getLog(ControladorUsuario.class);
  @Inject
  RepositorioUsuario repositorioUsuario;

  @RequestMapping(value = "/loginform", method = RequestMethod.GET)
  public String loginform(Model modelo) {
    return "usuario/loginform";
  }

  @RequestMapping(value = "/cadastro", method = RequestMethod.GET)
  public String cadastro(Model modelo) {
    modelo.addAttribute("usuario", new FormCadastroUsuario());
    return "usuario/cadastro";
  }

  @RequestMapping(value = "/login", method = RequestMethod.POST)
  public String login(Model modelo,
          @RequestParam("txtlogin") String login,
          @RequestParam("txtsenha") String senha,
          HttpSession sessao) {

    Usuario usuario = repositorioUsuario.localizarPeloLoginSenha(login, senha);
    if (usuario != null) {
      sessao.setAttribute("usuario", usuario);
      return "redirect:/pedido/listar.do";
    } else {
      return "redirect:/usuario/loginform.do";
    }
  }

  @RequestMapping(value = "/logout", method = RequestMethod.GET)
  public String logout(Model modelo,
          HttpSession sessao) {
    sessao.invalidate();
    return "redirect:/produtos/ofertas.do";
  }
}
